// miniprogram/pages/login/login.js
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    wx.hideLoading()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  handleLogin () {
    const that = this
    wx.getUserProfile({
      desc: '将获取您的昵称、头像用于显示',
      success: async (res) => {
        const globalData = app.globalData
        await wx.login({
          async success (response) {
            if (response.code) {
              // 0. 防止用户操作过快
              wx.showLoading({
                title: '登录中'
              })
              // 1. 获取 openid 和 access_token
              const { result } = await wx.cloud.callFunction({
                name: 'login',
                data: {
                  secret: globalData.secret
                }
              })
              globalData.openid = result.openid
              globalData.appid = result.appid
              globalData.userInfo = {}
              // 登录时，将头像等信息保存
              const userInfo = app.globalData.userInfo
              userInfo.username = res.userInfo.nickName
              userInfo.avatarUrl = res.userInfo.avatarUrl
              // 2. 使用 openid 检测是否为新用户，不是则帮助自动注册
              const user = await wx.cloud.callFunction({
                name: 'regist',
                data: {
                  username: globalData.userInfo.username,
                  avatarUrl: globalData.userInfo.avatarUrl
                }
              })
              // 第二次根据数据库获取用户信息
              // 如果是旧用户，就用数据库内的信息（可能与微信信息不同）
              globalData.userInfo = user.result.userInfo
              globalData.userInfo.fresh = user.result.fresh
              that.setData({
                isLogin: true
              })
              wx.hideLoading()
              wx.navigateBack({
                delta: 1
              })
            } else {
              wx.showModal({
                title: '提示',
                content: '登录失败'
              })
            }
          }
        })
      },
      fail: fail => {
        wx.showModal({
          title: '提示',
          content: '登录异常！'
        })
      }
    })
  }
})